Unique's Blog

Rust Workspace

2022-06-02 · 345字 · 2 min read
🏷️  Rust

多 package 的 Rust Workspace 组织和配置。

[TOC]

Cargo 工作空间,可以管理相互关联需要协同开发的的 crate。共享同一个 Cargo.lock 和 输出文件夹。

创建工作空间

在工作区目录创建Cargo.lock,并使用cargo new packageName [—lib]创建需要的多个 Package。所得工作空间目录结构:

ws
├── adder
│   ├── Cargo.toml
│   └── src
├── add-one
│   ├── Cargo.toml
│   └── src
├── add-two
│   ├── Cargo.toml
│   └── src
├── target
│   ├── CACHEDIR.TAG
│   ├── debug
│   └── tmp
├── Cargo.lock
└── Cargo.toml

将 package 添加到工作空间的成员配置下:

# 工作空间下的 Cargo.toml
[workspace]
members=[
	'add-one',
	'add-two',
	'adder',
]

exclude=[]

注意的问题:

  1. 不同 package 中使用的依赖版本会保持一致,配置在工作空间的Cargo.lock

  2. 不同的 package 中的 crate 的依赖关系需要显示在 package 的 Cargo.toml 中配置:

# Cargo.toml
[package]
name = "add-two"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
add-one = { path = "../add-one" }  # relative path
💡

引用add-twocrate 时,rs 源文件使用 add_two 代替(下划线)use add_two::add_fun

构建和发布

  • 构建指定的 crate,可以到该 package 下运行或者指定路径cargo run -p adder

  • crate 发布时,需要切换指定的 package 文件夹下执行cargo publish;并且依赖中path说明会被移除,使用crates.io中的版本。

[dependencies]
add-two = { path = "../add-two", version = "0.1.0" }

本文链接: Rust Workspace

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

发布日期: 2022-06-02

最新构建: 2024-12-26

本文已被阅读 0 次,该数据仅供参考

欢迎任何与文章内容相关并保持尊重的评论😊 !

共 43 篇文章 | Powered by Gridea | RSS
©2020-2024 Nuo. All rights reserved.